While strong demand for storage and processing has translated into steady sales of ever-more-powerful computing systems, customers have also become increasingly cost sensitive. Customers won't pay for what they don't need, and vendors have responded accordingly. As merely one example, enterprise-class storage systems are offered in a wide array of storage, processing, and networking configurations. Many customers also request systems that are upgradable over time in order to preserve some of the substantial investment. However, tension arises when customers seek customized hardware and software solutions as a cost-saving measure, in part because custom solutions are rarely cheaper to provide. Both vendors and customers carefully balance flexibility against system complexity, which tends to increase support costs and reduce system reliability.
In particular, vendors have sought opportunities to use a single component (be it a code fragment, processor, controller, storage device, etc.) in a wide array of products. This, reusability may allow the vendor to leverage economy of scale. In the simplest cases, a component can be used in a variety of situations with little or no modification. However, this is not often the case for printed circuit boards (PCBs) and other circuit assemblies. PCBs contain a large number of devices (resistors, capacitors, power circuitry, etc.) and device sockets connected by conductive traces crossing multiple insulator layers. In order to provide optimum performance, the devices and the traces are carefully laid out based on the installed components. Thus, reusability may take a backseat to reducing trace length and noise. Compounding the problem, many common protocols used to communicate at the PCB level require direct point-to-point connections rather than more flexible topologies. Accordingly, for these reasons and others, it would be beneficial for PCB designs to have the flexibility to support a wider array of hardware configurations in order to provide more cost-effective solutions.